package com.ksyun.ks3.demo;

import com.ksyun.ks3.dto.ObjectListing;
import com.ksyun.ks3.service.request.ListObjectsRequest;

/**
 * @author lijunwei[lijunwei@kingsoft.com]  
 * 
 * @date 2014年11月24日 下午8:15:57
 * 
 * @description 
 * 
 **/
public class ListObjectsDemo extends AbstractDemo{
	/**
	 * 列出一个bucket下的object，返回的最大数为1000条
	 */
	public ObjectListing listObjectsSimple(){
		ObjectListing list = client.listObjects("test.bucket");
		return list;
	}
	/**
	 * 将列出bucket下满足object key前缀为指定字符串的object，返回的最大数为1000条
	 */
	public ObjectListing listObjectsWithPrefix(){
		ObjectListing list = client.listObjects("test.bucket","xxx/dss/");
		return list;
	}
	/**
	 * 自己调节列出object的参数，
	 */
	public ObjectListing listObjectsUseRequest(){
		ObjectListing list = null;
		//新建一个ListObjectsRequest
		ListObjectsRequest request = new ListObjectsRequest("test.bucket");
		//设置参数
		request.setMaxKeys(50);//最多返回50条
		request.setPrefix("xxx");//返回以xxx开头的object
		//执行操作
		client.listObjects(request);
		return list;
	}
	/**
	 * 使用循环列出所有object
	 */
	public void listAllObjects(){
		ObjectListing list = null;
		//初始化一个请求
		ListObjectsRequest request = new ListObjectsRequest("test.bucket");
		do{
			//isTruncated为true时表示之后还有object，所以应该继续循环
			if(list!=null&&list.isTruncated())
				//在ObjectListing中将返回下次请求的marker
		    	request.setMarker(list.getNextMarker());
			list = client.listObjects(request);
		}while(list.isTruncated());
	}
}
